草庐IT

Linux IO重定向和管道

全部标签

c++ - 如果服务器崩溃,命名管道会发生什么情况?

我对管道知之甚少,但在我的VisualC++代码中使用管道连接了两个进程。管道运行良好,但我需要向其添加错误处理,因此想知道如果创建它的服务器崩溃时管道会发生什么情况,以及我如何从客户端进程中识别它?此外,如果客户端进程尝试访问同一个管道,在服务器崩溃后,如果没有错误处理,会发生什么情况?编辑:如果我继续创建新管道(比如使用系统时间作为管道名称),而前一个管道因服务器崩溃而损坏,会对内存产生什么影响?这些破管道会不会从内存中移除? 最佳答案 IIRCReadFile或WriteFile函数将返回FALSE并且GetLastError

windows - 如何使用 WinSxS list 重定向到旧版本的 DLL?

假设我有一个使用MSHTML的应用程序。安装IE9beta会更新MSHTML,这会破坏我的应用程序。我发现IE8dll的副本仍然存在于WinSxS文件夹中,所以也许我可以以某种方式使用它们而无需重新编译我的程序?WinSxS可以做到吗?我已经搜索了很长时间,但无法弄清楚如何重定向加载程序以使用IE8MSHTML(在WinSXS中)而不是IE9(在%SYSTEMROOT%\system32中)。任何想法/示例将不胜感激。 最佳答案 从那以后,我采用了不同的方法来解决这个问题。我将分享我最终所做的事情——我劫持了LoadLibrary并

c++ - 使用命名管道 (C++) 将图像发送到 FFMPEG

我在C++中有以下代码:#include#include#include//std::cout#include//std::ifstream#include#includeusingnamespacestd;intmain(intargc,constchar**argv){wcoutfile_vec;file_vec.resize(file_size_in_byte);infile.seekg(0,std::ios::beg);infile.read(&file_vec[0],file_size_in_byte);out.write(&file_vec[0],file_vec.size

c - 限制进程对管道的访问 (Windows)

是否可以通过进程限制对命名管道的访问(图像名称或进程ID都可以)?此处的上下文是一个FilterMinidriver,它必须与执行大部分业务逻辑的用户空间服务进行通信。由于此通信是安全敏感的,我想保护它免受外部干扰,而默认情况下,驱动程序创建的命名管道似乎可以通过任何用户空间进程进行通信知道管道的名称(通过静态或动态分析很容易发现)。这是我已经知道的:管道是Windows中的安全对象,因此,它们具有安全描述符。这个安全描述符可以包含一个DACL,它应该限制对该对象的访问。我广泛搜索了条件ACE的文档和示例,我希望它们可以做我想做的事,但我没有找到任何相关内容。编辑:我接受了MSalte

windows - 为 Windows 实现 SMB 重定向器的最简单方法?

我想实现一个小工具,让我可以在Windows上做我已经可以在任何其他操作系统上轻松做的事情-通过IP地址和端口指定一个远程SMB服务器。Windows本身不会通过445或139(它的选择)以外的任何端口执行SMB,我厌倦了玩whack-a-mole对于Microsoft不断添加到Windows中的各种坏事的解决方法,以fsck通过SSH端口转发隧道SMB。我的想法是一个小的命令行应用程序,可以让我做类似的事情netsubst服务器名-iIP-p端口这会与驱动程序协同工作吗?动态链接库?它作为SMB重定向器连接到Windows,但扫描由netsubst设置的服务器名称表,而不是在网络上查

windows - 用于与 Windows 命名管道通信的程序

我对Windows中的命名管道比较陌生。我需要一个类似于linux的socat的Windows工具来通过命名管道进行通信。Cygwin的socat可以访问窗口命名管道吗?如果是,怎么办? 最佳答案 我自己很快就弄明白了。使用putty和serial作为连接类型。在串行线路框中键入完整的管道名称。 关于windows-用于与Windows命名管道通信的程序,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

windows - 有没有办法检查批处理文件中的重定向?

如果我们有一个像这样被重定向到日志的批处理文件:C:\Testing\Example.bat>C:\Testing\Example.log批处理文件中是否有任何方法可以确定日志文件是否发生了标准输出重定向?基本上,我拥有的批处理文件需要向其传递三个参数。当省略参数时,批处理文件会像常规Windows命令一样打印一个用法示例,并抛出一个“暂停”,以便可以读取指令。但是,如果不带参数调用批处理并且它被记录下来,那么批处理文件将永远等待一个键来打破暂停,但不会在屏幕上显示任何内容。通常这根本不是问题,但是我正在努力让这个白痴变得安全,因为我不会成为在其他脚本/计划任务中实现批处理文件的人。在

windows - 对于COM服务器和注册表项重定向,是否需要做文件路径重定向转换?

如果标题不太准确,请原谅。我在做一些与COM服务器和注册表重定向相关的事情时遇到了一些问题,我不太确定我的理解是否正确。希望任何人都可以分享一些关于它的信息。提前致谢。基本上,在任何人可以使用它的服务之前,一个COM服务器已经在注册表中注册了。在64位Windows操作系统上,注册表中可能有2个可能的View,一个用于默认View,另一个用于WOW64View。例如,第一个注册表项是:COMPUTER\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID{GUID}\LocalServer32,另一个是:COMPUTER\HKEY_LOCAL_MACHIN

python - 从文件重定向 stdin 时如何读取包含 ctrl-Z 的文件?

我的python脚本中有这样一行:data=sys.stdin.read()然后我在Windows上运行带有文件重定向的脚本:>>pythontest.py如果binary_file包含\x1a(ctrl-Z)在Windows中是EOF,数据将只有\x1a之前的字符串。我知道这可以通过open("...","rb")修复常规文件。我将如何为sys.stdin处理这个问题? 最佳答案 我的下一步是尝试fileinputmodule但我的直觉是cmd.exe(或处理管道的代码)真正处理流,查找\0x1a字节并向您发送EOF。如果是这样,

c - 如何在Windows下用c创建管道

我试图在我的c程序中创建一个管道,以将数据输入到另一个程序myProgram.exe。我需要做的就是让myProgram运行并从主程序发送“退出”。问题是我不知道如何在c中创建管道。我在某处得到了一个有效的Perl示例:open(myHandle,".../myProgram.exe");//...(dosomethingelse)...printf(myHandle,"quit");close(myHandle);有人可以帮我把它翻译成C代码吗?请记住,我在Windows下运行,因此没有可用的unistd.h。干杯,B 最佳答案